#include <iostream>
using namespace std;

// 函数调用运算符重载，也称仿函数
// 仿函数非常灵活没有固定的写法

class MyPrint
{
public:
    // 重载函数调用运算符
    void operator()(string test)
    {
        cout << test << endl;
    }
   
};


void test01() 
{
    MyPrint mypring;
    mypring("hello world!");
} 

// 仿函数非常灵活，没有固定的写法
// 加法类
class MyAdd
{
public:
    int operator()(int num1, int num2)
    {
        return num1 + num2;
    }
};
void test02() 
{
    MyAdd myadd;
    int ret = myadd(100, 100);
    cout << "ret = " << ret << endl;
    // 匿名函数对象
    cout << MyAdd()(100, 100) <<endl;
} 

int main()
{
    // test01();
    test02();
    // int a = 0;
    // cout << ++a << endl;
    cout << "hello" << endl;
    return 0;
}